package br.com.dominio;

import java.io.Serializable;
import java.util.Set;

public class CPU implements Serializable {

	private static final long serialVersionUID = -2734934599003720572L;
	private String idCPU;
	private String fabricante;
	private String modelo;
	private String ip;
	private String partNumber;

	// Set é um interface que mantém uma matriz sem duplicações em seu
	// conteúdo, servindo como PK

	private Set<Node> nodes;

	// Observar que as propriedades acima não estão instanciadas, isto quer
	// dizer
	// que a relação de associação é 0..* Caso as propriedades fossem
	// instanciadas na construção do objeto, teríamos uma relação 1..*

	public CPU() {

	}

	public CPU(CPU cpu, Node node) {
		// Construtor alternativo, usado pelo iterator,que retorna em sua query
		// um par de objetos por linha

		cpu.addNode(node);

	}

	// Métodos acessores (getters e setters)

	public String getIdCPU() {
		return idCPU;
	}

	public void setIdCPU(String idCPU) {
		this.idCPU = idCPU;
	}

	public String getFabricante() {
		return fabricante;
	}

	public void setFabricante(String fabricante) {
		this.fabricante = fabricante;
	}

	public String getModelo() {
		return modelo;
	}

	public void setModelo(String modelo) {
		this.modelo = modelo;
	}

	public String getIp() {
		return ip;
	}

	public void setIp(String ip) {
		this.ip = ip;
	}

	public String getPartNumber() {
		return partNumber;
	}

	public void setPartNumber(String partNumber) {
		this.partNumber = partNumber;
	}

	@SuppressWarnings("rawtypes")
	public Set getNodes() {
		return nodes;
	}

	public void setNodes(Set<Node> nodes) {
		this.nodes = nodes;
	}

	public void addNode(Node node) {

		// Este método adiciona o objeto cpu ao node atual. agora Node tem uma
		// CPU.
		node.setCpu(this);

		// E o node é adicionado à lista de nodes.
		nodes.add(node);

	}

}
